package com.xiaoma.pattern.proxy.jdk1;

import java.lang.reflect.Method;

/**
 * <p>Title: ICustomInterceptor </p>
 * <p>Description：描述 </p>
 * <p>Package:com.xiaoma.pattern.proxy.jdk1 </p>
 * Date: 2022/5/26 12:22
 *
 * @author maj
 * @version 1.0.0
 */
public interface ICustomInterceptor {

    /**
     *
     * @param method 处理的方法
     * @param args 方法里边的参数
     */
    void before(Method method, Object[]args);

    /**
     *
     * @param method 处理的方法
     * @param args 方法里边的参数
     */
    void after(Method method,Object[]args);

    /**
     * 异常之后执行
     * throwable中包括exception（异常）和error（错误）
     * Error是一种严重的问题，应用程序不应该捕捉它
     * Exception一般可能是程序和业务上的错误，是可以恢复的。
     * Exception又分为检查性异常和非检查性异常
     * @param method 处理的方法
     * @param args 方法里边的参数
     * @param throwable 异常
     */
    void afterThrowing(Method method,Object[]args,Throwable throwable);

    /**
     * 在finally之后执行
     * @param method 处理的方法
     * @param args 方法里边的参数
     */
    void afterFinally(Method method, Object[]args);
}
